package cn.hpclub.server.security;

import cn.hpclub.server.constant.ClientApiConstant;
import cn.hpclub.server.service.TokenService;
import cn.hpclub.server.util.HttpUtil;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Created by wanglin on 2017/7/19.
 */
public class TokenUtils {

    private static final Logger logger     = LoggerFactory.getLogger(TokenUtils.class);
    /**
     * @param
     * @return JsonObject
     * @Title: validToken
     * @Description:TODO 验证token有效性，加了拦截器放到拦截器里面，VerifyAccount、SendSmsCode、
     *                   VerifySignCode、ResetPassword，这几个接口不需要验证token
     */
    public static JSONObject validToken(String token){
        logger.debug("validToken token {} ", token);
        // token非法和失效都返回1009，以便客户端统一处理跳到登陆界面。如果有些返回1006，有些返回1009，客户端统一处理非1000都跳到登陆界面，是有问题的，比如只是一般的接口异常。
        // token非法
        if(!TokenService.service.isTokenLegal(token)){
            // token非法
            JSONObject jo = HttpUtil.setResponseObj(ClientApiConstant.ResultCode.SESSION_TIMEOUT,
                    ClientApiConstant.Msg.PARA_ILLEGAL,
                    ClientApiConstant.Msg.PARA_ILLEGAL);
            System.out.println("ClientApiIntercepter isTokenLegal to client msg = " + jo.toString());
            return jo;
        }
        if(!TokenService.service.isTokenActive(token)){
            // token失效
            JSONObject jo = HttpUtil.setResponseObj(ClientApiConstant.ResultCode.SESSION_TIMEOUT,
                    ClientApiConstant.Msg.MSG_SESSION_TIMEOUT,
                    ClientApiConstant.Msg.MSG_SESSION_TIMEOUT);
            System.out.println("ClientApiIntercepter isTokenActive to client msg = " + jo.toString());
            return jo;
        }
        return null;
    }
}
